所基于的假设
- 异常是由较少实例组成的少数派
- 它们拥有与正常实例差别较大的属性
换句话说,异常是少而不同的(few and different),这使得它们比正常的点更容易被孤立。
本文证明了可以有效地构造一个树状结构来隔离每个实例。因为异常点易于被隔离,它们通常被被隔离得更接近树的根部;而正常的点被隔离在树的更深的一端。
在IForest中,异常通常是那些在树上具有较短的平均路径长度的实例。
孤立与孤立树
isolation
在论文中,术语 隔离(isolation)是 “将实例与其他实例分开”(separating an instance from the rest of the instances)。
在数据引导的随机树(data-induced random tree)中,递归地对实例进行分区,直到所有实例都被隔离。
这种随机分区为异常产生了明显的更短路径,因为
- 异常实例越少,导致分区数量越少——树结构中的路径越短
- 具有可区分属性值的实例更有可能在早期分区中被分离。
因此,当一组随机树为某些特定的点共同产生较短的路径长度时,那么它们很有可能是异常的。
如下图1所示,我们观察到,一个正常的点
由于每个分区都是随机生成的,所以每个树是由不同的分区生成的。对于每个实例,我们对其在一些树上的路径长度求平均,以找到路径长度的期望。图1(c)显示,当树数增加时,
Isolation Tree
孤立树上的点
给定一个样本的数据
孤立树为真二叉树(Proper binary trees )(不知道怎么翻译),即每个点拥有0个或2个子节点。当样本
Path Length
Anomaly Score
因为 iTree 与 BST(Binary Search Tree,二叉搜索树)拥有相同的结构,所以对于在叶子节点终止
给定
其中
我们用
其中
- 当
时, - 当
时, - 当
时,
图2展示了
如果实例的异常得分
非常接近1,那么它们肯定是异常如果实例的异常得分
远小于0.5,那么它们可以被视为正常实例如果所有实例的异常得分
,那么整个样本实际上没有任何明显的异常。
Characteristic of Isolation Trees
作为一个使用隔离树的树集合,iForest
- 将路径长度较短的点识别为异常
- 有多个树作为“专家”来定位不同的异常。
采样的好处
隔离法在样本量较小的情况下效果最佳。大样例量会降低forest隔离异常的能力,因为正常实例会干扰隔离过程,因此会降低其清晰隔离异常的能力。
swamping指将正常样本标识为异常。当正常样本与异常样本很近时,分离异常实例所需的分区数量就会增长,这使得区分正常实例与异常实例更加困难。
masking指异常的大量存在掩盖了自身的存在。当异常簇大且密集时,将会增加分区的数量来隔离每个异常。这种情况下,这些孤立树的评估具有更长的路径长度,使得异常更难检测到。
注意,swamping和masking都是太多数据用于异常检测的后果。
孤立树使用子采样来建立一个部分模型,从而减轻了swamping和masking的影响。
这是因为
- 子样本控制了数据的大小,这有助于iForest更好地隔离异常的例子
- 每个隔离树都可以特殊化,因为每个子样本包含不同的异常集,甚至没有异常。
如图4(a)所示。该数据集有两个异常簇,位于中心的一个大的正常点簇附近。异常簇周围存在干扰的正常点,而且异常簇比正常簇更加密集。
图4(b)展示了原始数据的128个采样。异常簇在子样本中可以清晰地识别出来。那些围绕着两个异常簇的正常实例已经被清除,而且异常簇的大小变小,这使得它们更容被易识别。
当使用整个样本时,iForest的AUC为0.67。当使用128的子采样大小时,iForest的AUC为0.91。
结果表明,通过显著减少的子样本,forest在处理swamping和masking效应方面具有优越的异常检测能力。
iFroest异常检测
训练阶段
树高限制根据采样的大小
子采样大小的选择
通常
当
树的个数
我们发现路径长度通常在t = 100之前收敛。
iForest训练的复杂性是
评估阶段
异常得分的计算在[第二节第四小节](###Anomaly Score)进行了描述,具体的伪代码描述如下图所示。
需要注意的是,当
评估过程的复杂性为
实验评估
详细的内容需看原论文,这里只摘录一点重要的结论
关于孤立树的个数
在较大的
关于子采样
总而言之,
关于高维数据
在构建每个iTree之前,我们使用峰度(Kurtosis)进行一个简单的统计检验,从子样本中选择一个属性子空间。峰度为每个属性提供了一个排序后,根据这个排序选择属性的子空间来构造每棵树。结果表明,当子空间大小接近原始属性数时,检测性能有所提高。
从图7可以看出
- 使用整个所有维度的处理时间都小于30秒
- 当子空间大小与原始属性数量相同时,AUC达到峰值
所以,iForest能够通过一个简单的添加峰度测试来提高检测性能。
关于只是使用正样本进行训练
当使用异常点和正常点进行训练时,Http报告AUC = 0.9997;而当训练仅使用正常点时,AUC降至0.9919。对于ForestCover, AUC从0.8817降低到0.8802。使用更大的子样本量可以帮助恢复检测性能。
论述
使用小样本的含义是,可以很容易地以最小的内存占用托管在线异常检测系统。